package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 通过提高每次读写的数据量，减少实际读写的次数可以达到读写效率提高的效果
 * */
public class CopyDemo2 {
    public static void main(String[] args) throws IOException {

        /*
         * 块读 ：一次读取一组字节
         * int read(byte[] data);
         * 块读方法一次可以读取多少个字节取决于传入的byte[]数组的长度，
         * 块读方法的返回值为此次read方法实际读取到的字节数量
         * 当没有读取到新的数据时，快读会返回-1表示没有读取到新的数据
         * */

        /*
         * 块写 ：一次写出一组字节
         * void write（byte[] data）
         * 将data数组中的所有元素都写到抽象路径文件上
         *
         * void write(byte data,int offset,int len)
         * 一次性将给定的字节数组从下标offset处开始连续写len个
         *
         * */

        FileInputStream fileInputStream = new FileInputStream("./img.png");
        FileOutputStream fileOutputStream = new FileOutputStream("./img.png");
        long start = System.currentTimeMillis();
        int len = 0; //记录每次实际读取到的字节数量
        byte[] data = new byte[1024 * 10]; //每次读取的10kb的数据
        while ((len = fileInputStream.read(data)) != -1) {
            fileOutputStream.write(data, 0, len);
        }
        long end = System.currentTimeMillis();
        System.out.println("本次运行:" + (end - start) + "毫秒");
        fileInputStream.close();
        fileOutputStream.close();
    }
}
